package com.rzcode.coinex.rpc.common.component;

import com.rzcode.coinex.rpc.common.util.MessageResult;

import java.math.BigDecimal;

public interface RpcController {
    /**
     * 获取当前区块链的区块高度
     * 这个方法用于查询区块链上最新区块的区块高度，即已确认交易的最大数量
     *
     * @return 包含区块高度信息的MessageResult对象
     */
    MessageResult blockHeight();

    /**
     * 为指定用户生成一个新的钱包地址
     *
     * @param uuid 用户的唯一标识符
     * @return 包含新地址信息的MessageResult对象
     */
    MessageResult getNewAddress(String uuid);

    /**
     * 执行提现操作。
     *
     * @param toAddress  提现的目标地址
     * @param amount     提现的金额
     * @param fee        手续费
     * @param isSync     是否同步执行
     * @param withdrawId 提现请求的唯一标识
     * @return 包含提现结果的MessageResult对象
     */
    MessageResult withdraw(String toAddress, BigDecimal amount, BigDecimal fee, Boolean isSync, String withdrawId);

    /**
     * 执行转账操作。
     * 注意：此方法缺少必要的参数，如源地址、目标地址和转账金额。
     *
     * @return 包含转账结果的MessageResult对象
     */
    MessageResult transfer();

    /**
     * 查询用户的账户余额。
     *
     * @return 包含用户余额信息的MessageResult对象
     */
    MessageResult balance();
}
